package com.vates.vsp.practico.asistencia.business;


import com.vates.vsp.practico.alumnos.business.Alumnos;
import java.util.List;
import java.util.ArrayList;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.SessionScoped;
import javax.faces.event.AjaxBehaviorEvent;

import com.vates.vsp.practico.alumnos.business.Clases;
import com.vates.vsp.practico.alumnos.service.AlumnosService;
import com.vates.vsp.practico.asistencia.service.AsistenciaService;
import com.vates.vsp.practico.asistencia.view.AsistenciaView;
import com.vates.vsp.practico.commons.UseCaseMode;

@ManagedBean(name = "asistenciaListener")
@SessionScoped
public class AsistenciaListener {
	@ManagedProperty(value = "#{asistenciaView}")
	AsistenciaView asistenciaView;
	@ManagedProperty(value = "#{asistenciaService}")
	AsistenciaService asistenciaService;
	@ManagedProperty(value = "#{alumnosService}")
	AlumnosService alumnosService;

	public AsistenciaView getAsistenciaView() {
		return asistenciaView;
	}

	public void setAsistenciaView(AsistenciaView asistenciaView) {
		this.asistenciaView = asistenciaView;
	}

	public AsistenciaService getAsistenciaService() {
		return asistenciaService;
	}

	public void setAsistenciaService(AsistenciaService asistenciaService) {
		this.asistenciaService = asistenciaService;
	}

	public AlumnosService getAlumnosService() {
		return alumnosService;
	}

	public void setAlumnosService(AlumnosService alumnosService) {
		this.alumnosService = alumnosService;
	}

	public String registrarAsistencias() {

		asistenciaView.setUseCaseMode(UseCaseMode.NUEVO);
		asistenciaView.setClase(new Clases());
		asistenciaView.setListaClases(asistenciaService.getClases());
		asistenciaView.setListaAlumnos(alumnosService.getAllAlumnos());
		asistenciaView.setAsistentes(alumnosService.getAllIdAlumnos());

		return "asistencia";

	}

	public void setClase(AjaxBehaviorEvent event) {
		Clases claseSeleccionada = asistenciaView.getClase();
		asistenciaView.setClase(asistenciaService.getClase(claseSeleccionada));
	}

	public String guardar() {
		List<Alumnos> listaAlumnos = asistenciaView.getListaAlumnos();
		List<Integer> alumnosAsistentes = asistenciaView.getAsistentes();
		Clases claseSeleccionada = asistenciaView.getClase();

		List<Asistencia> listaAsistencia = new ArrayList<Asistencia>();
		for (Alumnos alumno : listaAlumnos) {
			if (alumnosAsistentes.contains(alumno.getId())) {
				listaAsistencia.add(new Asistencia(alumno, claseSeleccionada, 1));
			} else {
				listaAsistencia.add(new Asistencia(alumno, claseSeleccionada, 0));
			}
		}
		asistenciaService.guardar(listaAsistencia);

		return "guardado";
	}

	public String volver() {
		return "volver";
	}

	public String salir() {
		return "salir";
	}
}
